//
// Created by 86131 on 2023/10/24.
//

#ifndef SHUJUJIEGUO_STACK_H
#define SHUJUJIEGUO_STACK_H
#include <iostream>
#endif //SHUJUJIEGUO_STACK_H
#include "ArrayList.h"
template <typename T>
class Stack {
private:
    ArrayList<T> list;

public:
    // 压栈
    void push(const T& item) {
        list.add(item);
    }

    // 出栈
    void pop() {
        if (list.getSize() > 0) {
            list.setSize(list.getSize()-1);
        } else {
            std::cout << "栈为空，无法出栈。" << std::endl;
        }
    }

    // 获取栈顶元素
    T& top() {
        return list.get(list.getSize() - 1);
    }

    // 判断栈是否为空
    bool empty() const {
        return list.getSize() == 0;
    }
    int size(){
        return list.getSize();
    }
};